package com.glb.leetcode;

import java.util.Arrays;

public class C3_duplicate2 {
  public static void main(String[] args) {
    // int[] nums = { 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 4, 5, 5, 5, 5, 5 };
    int[] nums = { 1, 1, 1, 2, 2, 3 };

    System.out.println(Arrays.toString(nums));
    int length = removeDuplicates(nums);

    System.out.println(length);
    System.out.println(Arrays.toString(nums));
  }

  public static int removeDuplicates(int[] nums) {
    return process(nums, 2);
  }

  static int process(int[] nums, int k) {
    int u = 0;
    for (int x : nums) {
      if (u < k || nums[u - k] != x)
        nums[u++] = x;
    }
    return u;
  }

  // public static int removeDuplicates(int[] nums) {
  // int n = nums.length;
  // if (n <= 2) {
  // return n;
  // }
  // int slow = 2, fast = 2;
  // while (fast < n) {
  // if (nums[slow - 2] != nums[fast]) {
  // nums[slow] = nums[fast];
  // ++slow;
  // }
  // ++fast;
  // }
  // return slow;
  // }

  // public static int removeDuplicates(int[] nums) {
  // int left = 1;
  // for (int right = 1, length = nums.length; right < length; right++) {
  // int cur = nums[right];
  // boolean match = false;
  // boolean match2 = false;
  // for (int i = 0; i < left; i++) {
  // if (nums[i] == cur && match) {
  // match2 = true;
  // break;
  // }

  // if (nums[i] == cur) {
  // match = true;
  // }
  // }

  // if (!match2) {
  // nums[left++] = cur;
  // }
  // }

  // return left;
  // }
}
